1.23 Module
 
Angenommen, diese Prozedur ist nicht die einzige. Stellen Sie sich vor, das Formular benötigt mehrere Dutzend Prozeduren. Dann sollte man sie nicht in den Code des Formulars integrieren, sondern sauber trennen. Der Ort, an dem solche Prozeduren klassisch gespeichert werden, sind Module. Über den Menüpunkt Projekt . Modul hinzufügen wird ein neues Modul erzeugt. Es wird »basKaffeeZubehör« genannt und erhält beim Speichern ebenfalls die Endung vb.
Die Prozedur im Modul sieht folgendermaßen aus:
Module basKaffeeZubehör
Private Sub EinAus()
If fSchalter = True Then
frmKaffee.chkMilch.Enabled = True
frmKaffee.chkZucker.Enabled = True
Else
frmKaffee.chkMilch.Enabled = False
frmKaffee.chkZucker.Enabled = False
frmKaffee.chkMilch.Checked = False
frmKaffee.chkZucker.Checked = False
End If
End Sub
End Module
Damit wird sie sauber durch die Steuerelemente aufgerufen. Man könnte statt
Call EinAus()
auch schreiben
Call basKaffeeZubehör.EinAus()
Vor allem, wenn viele Module mit noch viel mehr Prozeduren im Projekt liegen, empfiehlt sich die saubere, exakte Schreibweise. Sie erleichtert anderen Programmierern, mit dem Code weiterzuarbeiten.
Nun hat die Sache mit den globalen Variablen einen Nachteil: Zu viele globale Variablen erleichtern sicherlich nicht die Lesbarkeit des Programms. Deshalb könnte man die Variable auch übergeben. Damit die Prozedur EinAus einen Wert erhält, wird in eine Klammer der Name des übergebenen Werts geschrieben. Dieser Wert wird sauber deklariert und VB.NET setzt die Art der Übergabe davor: ByVal:
Module basKaffeeZubehör
Public Sub EinAus(ByVal fSchalter As Boolean)
Der Unterschied zwischen ByVal und ByRef ist folgender: Werden die alten Werte in der Prozedur noch verwendet, dann geschieht die Übergabe »Call by Value«, das heißt, die alten Werte sind in der Ursprungs-Prozedur noch vorhanden. Wird dagegen die Prozedur mit »Call by Reference« aufgerufen, dann wird der veränderte Werte in der ersten Prozedur verwendet.
Und schließlich gäbe es noch die Variante, dass eine Funktion anstelle einer Prozedur verwendet wird. Die Syntax lautet
Public Function EinAus(ByVal fSchalter As _
Boolean)
Der Unterschied zwischen Funktionen und Prozeduren liegt darin, dass Funktionen in der Regel einen Wert zurückgeben, während Prozeduren etwas ausführen. Allerdings verlaufen die Grenzen etwas unscharf. Auf Funktionen wird noch eingegangen.
|